package com.ehsy.service;

import com.dtflys.forest.annotation.*;
import com.ehsy.common.ResponseVo;
import com.ehsy.config.MyRetryCondition;
import com.ehsy.config.MyRetryer;
import com.ehsy.model.UserInfo;
import org.springframework.stereotype.Component;

/**
 * @author YanZhen_Li
 * @version 1.0
 * @title RetryService
 * @description
 * @create 2024/6/18 18:10
 */
@Component
@Address(host = "127.0.0.1", port = "8080")
public interface RetryService {
    @Get("/test/request/json/body")
    ResponseVo<UserInfo> test1(@Query UserInfo user);

    @Get("/test/code/{code}")
    String test2(@Var("code") Integer code);

    // maxRetryCount 为最大重试次数，默认为 0 次
    // maxRetryInterval 为最大重试时间间隔, 单位为毫秒，默认为 0 毫秒
    @Get("/test/code/{code}")
    @Retry(maxRetryCount = "1", maxRetryInterval = "1000")
    String test3(@Var("code") Integer code);

    // maxRetryCount 为最大重试次数，默认为 0 次
    // maxRetryInterval 为最大重试时间间隔, 单位为毫秒，默认为 0 毫秒
    @Get("/test/code/{code}")
    @Retry(maxRetryCount = "5", maxRetryInterval = "10000000")
    @Retryer(MyRetryer.class) // 配置我们的重拾起，按照自定义重拾起给定的时间间隔 // 这个类也可以放在interface类上
    String test4(@Var("code") Integer code);

    @Get("/test/code/{code}")
    @Retry(maxRetryCount = "5", maxRetryInterval = "100", condition = MyRetryCondition.class)
    String test5(@Var("code") Integer code);
}
